1 环境准备
2 部署方法
-
整套安装配置,但不能选择安装目录
包括MySQL Server和MySQL Workbench, MySQL for Visual Studio, and MySQL for Excel
二进制分发包
没有GUI,详见Section 2.3.4, “Installing MySQL on Microsoft Windows Using a
noinstall
ZIP Archive”mysql-
VERSION
-winx64.zip运行所需的组件
mysql-
VERSION
-winx64-debug-test.zip测试、调试组件
源码
Docker镜像
官方只提供Linux平台
其他详见Section 2.5.6.3, “Deploying MySQL on Windows and Other Non-Linux Platforms with Docker”
3 二进制分发包部署
(1) 解压到指定目录
(2) 创建配置文件
1) 位置
如安装根目录和启动盘根目录,详见Section 4.2.2.2, “Using Option Files”
也可在–defaults-extra-file指定
若没有指定,创建并使用默认配置
2) 命名
启动盘根目录可命名为my.ini或my.cnf
其他默认位置只能为my.ini
参数指定可为任意名称
3) 配置
默认参数详见Section 5.1.2, “Server Configuration Defaults”
通常只需配置安装目录和数据目录
1 | # Windows系统使用双反斜杠 |
(3) 选择服务器类型
Windows下MySQL 8.0支持符号链接
默认使用TCP/IP协议连接,因为更快。可以使用named_pipe
(4) 初始化数据目录
1) 初始化
使用二进制分发包或源码部署,需要初始化数据目录
需要为MySQL用户和用户组分配数据目录权限:
1 | chown mysql:mysql mysql-files |
通常,初始化仅在首次使用时执行。当对于已有的表,并不影响
初始化细节详见Data Directory Initialization Procedure和Server Actions During Data Directory Initialization
自动安全连接:bin/mysql_ssl_rsa_setup
详见Section 4.4.3, “mysql_ssl_rsa_setup — Create SSL/RSA Files”
自启动设置详见Section 2.10.5, “Starting and Stopping MySQL Automatically”
时区启用详见 Section 5.1.14, “MySQL Server Time Zone Support”
1’ 初始化过程
密码选项:
--initialize
设置root密码--initialize-insecure
不设置root密码
消息(包含初始密码)输出到标准错误输出中。Window平台使用–console输出到控制台
Unix和类Unix平台,使用–user额外指定数据目录拥有者
2’ 初始化时服务器动作
检查数据目录
若不存在则创建
若非空则退出
An existing data directory is permitted to be nonempty if every entry has a name that begins with a period (
.
).创建默认模式
初始化管理InnoDB所需的system tablespace和数据结构
创建root用户和保留用户
填充帮助表
帮助表详见Section 13.8.3, “HELP Statement”
时区表需要手动填充,详见 Section 5.1.14, “MySQL Server Time Zone Support”
-
如果指定了该文件
用于执行自定义的初始化命令
在启动模式中,不支持账户管理操作(如创建、授权、副本、全局事务识别符等)
注意:
MySQL 8.0默认认证插件改为caching_sha2_password。
数据目录初始化序列没有替代mysql_secure_installation和mysql_ssl_rsa_setup
(5) 设置环境变量
设置MySQL_HOME和包含bin目录的PATH变量,方便使用和切换不同MYSQL实例
(6) 首次使用
1 | # 启动 |
默认使用TCP/IP连接,可以配置使用命名管道或共享内存(--protocol=MEMORY
)
登录时,-u 指定用户,-p需要输入密码
修改初始密码详见Post-Initialization root Password Assignment
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password'; |
日志默认输出到数据目录的异常日志中
(7) MySQL服务
1 | # 作为自启动服务 |
可以在选项后添加服务名称,服务名称后可以添加以下选项:
--defaults-file
自定义配置文件- –local-service 以受限的本地用户运行服务
配置读取:
- 没有另选服务名(默认服务名为MySQL):同时读取mysqld和服务名组
- 另选服务名:只读取服务名组
启动MySQL服务用户需要具有%TEMP%
和%TMP%
(%TMPDIR%
,--tmpdir
,如果有)的写权限。默认用户是LocalSystem
并且%TEMP%
和 %TMP%
是C:\Windows\Temp
。
手动启动服务:
1 | # 以下命令不区分大小写 |
移除服务:
1 | # 先停止服务再移除 |
(8) 测试
可使用以下命令之一测试:
1 | mysqlshow |
在TCP/IP模式下使用mysqld连接过慢,可能是DNS问题。可以配置skip_name_resolve
选项并使用localhost或grant table中的HOST列的ip地址连接。注意:用户需要具有相应IP地址授权。
使用命名管道,可以通过 --pipe
或--protocol=PIPE
,或者使用--socket
同时重命名管道
(9) 故障排除
首先,查看日志。详见Section 5.4.2, “The Error Log”
存储位置参考my.ini文件,默认为C:\Program Files\MySQL\MySQL Server 8.0\data或C:\ProgramData\Mysql。
(10) Windows平台限制
1) 进程内存
32位系统可用内存上限为4GB,其中内核和用户各一半。因此单一进程最大2GB。
大于2GB场景,需要使用64位系统。
2) 文件系统别名
通常用于移动数据到更快的存储介质。
Windows下,MyISAM引擎不可用。
3) 端口数量
Windows提供大约4000个端口用于客户端连接。
端口在断开连接后需要2-4分钟时间恢复可用。
大量的MySQL连接可能导致端口用尽。
详见http://support.microsoft.com/default.aspx?scid=kb;en-us;196271
4) DATA DIRECTORY 和INDEX DIRECTORY
CREATE TABLE
在Windows平台仅支持InnoDB引擎。
Windows平台上不支持DATA DIRECTORY 和INDEX DIRECTORY
5) DROP DATABASE
不能删除正在使用的表
6) 大小写不敏感
Windows平台上文件名、数据库和表名大小写不敏感。
唯一的约束是数据库和表名称在同一statement中具有相同的大小写模式。
7) 目录和文件名称
在Windows中,目录和文件名称需要与当前ANSI code pages匹配。
代码页也叫字符集。
如日文与西方时区不匹配。
8) 路径分隔符
Windows中使用反斜杠\作为路径分隔符,使用时需要转义\\
。也可以使用单个斜杠/
在MySQL中,反斜杠是逃逸字符。
9) ^z字符
在Windows中,^z被认为是文件的终止,导致程序退出。
可以将数据保存到.sql文件中,使用–execute读取
示例如下:
1 | # binary_log_file文件中包含^z字符 |
注意事项
(1) 大表支持
4GB以上的表需要安装在NTFS或更新的文件系统上
(2) 杀毒软件
建议添加数据目录和临时目录到白名单中